package com.model.domain.dinero;

import com.model.domain.persona.Personal;
import com.model.domain.tiempo.Actividad;
import com.model.domain.tiempo.Periodo;
import com.model.domain.ubicacion.Conglomerado;
import com.model.domain.ubicacion.AreaGeografica;
import java.text.ParseException;
import java.util.List;
import util.date.DateUtil;
import util.dinero.Dinero;

/**
 *
 * @author Rdelacruz
 */
public class ConglomeradoPersonalResumen {
    private Integer numero;
    
    private Conglomerado conglomerado;
    private Personal personal;
    private Periodo periodoTrabajo;
    
    private Actividad actividadDiaLunes;
    private Actividad actividadDiaMartes;
    private Actividad actividadDiaMiercoles;
    private Actividad actividadDiaJueves;
    private Actividad actividadDiaViernes;
    private Actividad actividadDiaSabado;
    private Actividad actividadDiaDomingo;
    
    private ConglomeradoPersonalDetalle partidaDiaria;
    
    private List<ConglomeradoPersonalDetalle> partidasNoDiarias;
   
    private String observacion;
    
    /////////
    
    //Atributos calculados    
    private ConglomeradoPersonalDetalle viaticosR;
    private ConglomeradoPersonalDetalle viaticosU;
    private ConglomeradoPersonalDetalle pasajes;
    private ConglomeradoPersonalDetalle movilidadLocal;
    private ConglomeradoPersonalDetalle materialEscritorio;
    private ConglomeradoPersonalDetalle internet;
    
    public Integer getTotalViaticos() {
        ConglomeradoPersonalDetalle cpd = new ConglomeradoPersonalDetalle(0);
        cpd.sumar(viaticosR);
        cpd.sumar(viaticosU);
        return cpd.getTotal();
    }
        
    public String getFechaInicio() {
        String fecha = periodoTrabajo.getFechaInicio();
        try {
            if(validarActividad(actividadDiaMartes))
                return periodoTrabajo.getFechaInicio();
            else if(validarActividad(actividadDiaMiercoles))            
                return DateUtil.sumar(fecha,1);
            else if(validarActividad(actividadDiaJueves))            
                return DateUtil.sumar(fecha,2);
            else if(validarActividad(actividadDiaViernes))            
                return DateUtil.sumar(fecha,3);
            else if(validarActividad(actividadDiaSabado))            
                return DateUtil.sumar(fecha,4);
            else if(validarActividad(actividadDiaDomingo))            
                return DateUtil.sumar(fecha,5);
            else if(validarActividad(actividadDiaLunes))            
                return DateUtil.sumar(fecha,6);
        } catch (ParseException ex) {
            
        }
        return "";
    }
    
    public String getFechaFinal() {
        String fecha = periodoTrabajo.getFechaInicio();
        try {
            if(validarActividad(actividadDiaLunes))            
                return DateUtil.sumar(fecha,6);
            else if(validarActividad(actividadDiaDomingo))            
                return DateUtil.sumar(fecha,5);            
            else if(validarActividad(actividadDiaSabado))            
                return DateUtil.sumar(fecha,4);            
            else if(validarActividad(actividadDiaViernes))            
                return DateUtil.sumar(fecha,3);
            else if(validarActividad(actividadDiaJueves))            
                return DateUtil.sumar(fecha,2);
            else if(validarActividad(actividadDiaMiercoles))            
                return DateUtil.sumar(fecha,1);
            else if(validarActividad(actividadDiaMartes))
                return periodoTrabajo.getFechaInicio();
            
        } catch (ParseException ex) {
            
        }
        return "";
    }
    
    private boolean validarActividad(Actividad a) {
        return a!=null && a.isAsignable();
    }
    
    public void inicializarPartidas() {
        viaticosR = new ConglomeradoPersonalDetalle(0);
        viaticosU = new ConglomeradoPersonalDetalle(0);
        materialEscritorio = new ConglomeradoPersonalDetalle(0);
        movilidadLocal = new ConglomeradoPersonalDetalle(0);
        pasajes = new ConglomeradoPersonalDetalle(0);
        internet = new ConglomeradoPersonalDetalle(0);
    }
    
    public void sumar(ConglomeradoPersonalResumen cpr) {
        viaticosR.sumar(cpr.viaticosR);
        viaticosU.sumar(cpr.viaticosU);
        materialEscritorio.sumar(cpr.materialEscritorio);
        movilidadLocal.sumar(cpr.movilidadLocal);
        pasajes.sumar(cpr.pasajes);
        internet.sumar(cpr.internet);
    }
       
    public Dinero getTotal() {
        Dinero total = new Dinero();        
        return total.sumar(viaticosR.getTotal())
                .sumar(viaticosU.getTotal())
                .sumar(pasajes.getTotal())
                .sumar(movilidadLocal.getTotal())
                .sumar(materialEscritorio.getTotal())
                .sumar(internet.getTotal());
    }
                
    public Personal getPersonal() {
        return personal;
    }

    public void setPersonal(Personal personal) {
        this.personal = personal;
    }

  
    public Conglomerado getConglomerado() {
        return conglomerado;
    }

    public void setConglomerado(Conglomerado conglomerado) {
        this.conglomerado = conglomerado;
    }
  

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public Periodo getPeriodoTrabajo() {
        return periodoTrabajo;
    }

    public void setPeriodoTrabajo(Periodo periodoTrabajo) {
        this.periodoTrabajo = periodoTrabajo;
    }

    public Actividad getActividadDiaLunes() {
        return actividadDiaLunes;
    }

    public void setActividadDiaLunes(Actividad actividadDiaLunes) {
        this.actividadDiaLunes = actividadDiaLunes;
    }

    public Actividad getActividadDiaMartes() {
        return actividadDiaMartes;
    }

    public void setActividadDiaMartes(Actividad actividadDiaMartes) {
        this.actividadDiaMartes = actividadDiaMartes;
    }

    public Actividad getActividadDiaMiercoles() {
        return actividadDiaMiercoles;
    }

    public void setActividadDiaMiercoles(Actividad actividadDiaMiercoles) {
        this.actividadDiaMiercoles = actividadDiaMiercoles;
    }

    public Actividad getActividadDiaJueves() {
        return actividadDiaJueves;
    }

    public void setActividadDiaJueves(Actividad actividadDiaJueves) {
        this.actividadDiaJueves = actividadDiaJueves;
    }

    public Actividad getActividadDiaViernes() {
        return actividadDiaViernes;
    }

    public void setActividadDiaViernes(Actividad actividadDiaViernes) {
        this.actividadDiaViernes = actividadDiaViernes;
    }

    public Actividad getActividadDiaSabado() {
        return actividadDiaSabado;
    }

    public void setActividadDiaSabado(Actividad actividadDiaSabado) {
        this.actividadDiaSabado = actividadDiaSabado;
    }

    public Actividad getActividadDiaDomingo() {
        return actividadDiaDomingo;
    }

    public void setActividadDiaDomingo(Actividad actividadDiaDomingo) {
        this.actividadDiaDomingo = actividadDiaDomingo;
    }
  

    public ConglomeradoPersonalDetalle getPartidaDiaria() {
        return partidaDiaria;
    }

    public void setPartidaDiaria(ConglomeradoPersonalDetalle partidaDiaria) {
        this.partidaDiaria = partidaDiaria;
    }

    public List<ConglomeradoPersonalDetalle> getPartidasNoDiarias() {
        return partidasNoDiarias;
    }

    public void setPartidasNoDiarias(List<ConglomeradoPersonalDetalle> partidasNoDiarias) {
        this.partidasNoDiarias = partidasNoDiarias;
    }

    public ConglomeradoPersonalDetalle getViaticosR() {
        return viaticosR;
    }

    public void setViaticosR(ConglomeradoPersonalDetalle viaticosR) {
        this.viaticosR = viaticosR;
    }

    public ConglomeradoPersonalDetalle getViaticosU() {
        return viaticosU;
    }

    public void setViaticosU(ConglomeradoPersonalDetalle viaticosU) {
        this.viaticosU = viaticosU;
    }

    public ConglomeradoPersonalDetalle getPasajes() {
        return pasajes;
    }

    public void setPasajes(ConglomeradoPersonalDetalle pasajes) {
        this.pasajes = pasajes;
    }

    public ConglomeradoPersonalDetalle getMovilidadLocal() {
        return movilidadLocal;
    }

    public void setMovilidadLocal(ConglomeradoPersonalDetalle movilidadLocal) {
        this.movilidadLocal = movilidadLocal;
    }

    public ConglomeradoPersonalDetalle getMaterialEscritorio() {
        return materialEscritorio;
    }

    public void setMaterialEscritorio(ConglomeradoPersonalDetalle materialEscritorio) {
        this.materialEscritorio = materialEscritorio;
    }

    public ConglomeradoPersonalDetalle getInternet() {
        return internet;
    }

    public void setInternet(ConglomeradoPersonalDetalle internet) {
        this.internet = internet;
    }

    public Integer getNumero() {
        return numero;
    }

    public void setNumero(Integer numero) {
        this.numero = numero;
    }

    public String getClaseHTML() {
        AreaGeografica area = conglomerado.getAreaGeografica();
        if(area!=null) {
            String estilo="";
            switch(area) {
                case URBANO:
                    estilo = "sedUrb";
                    break;
                case RURAL:
                    estilo = "sedRur";
                    break;
                case RESTO_URBANO:    
                    estilo = "sedResUrb";
                    break;
            }
            return "class='"+estilo+"'";
        }
        return "";
    }
    
}
